package com.example.demo.test;
//java实现爬楼梯的最小费用（动态规划）
/**
 你需要爬上一个N层的楼梯，在爬楼梯过程中， 每阶楼梯需花费非负代价，第i阶楼梯花费代价表示为cost[i]， 一旦你付出了代价，你可以在该阶基础上往上爬一阶或两阶。
 你可以从第 0 阶或者 第 1 阶开始，请找到到达顶层的最小的代价是多少。
 N和cost[i]皆为整数，且N∈[2,1000]，cost[i]∈ [0, 999]。
 */
public class Ladder {
        public static void main(String args[]){
            int a[] = {10,15,20};
            minCostClimbingStairs(a);
        }
        public static int minCostClimbingStairs(int[] cost) {
            if(cost.length ==2){
                return Math.min(cost[0], cost[1]);
            }
            int i=2;
            int length = cost.length;
            int[] dp = new int[3];
            while(i<=length){
                dp[2] = Math.min(dp[1]+cost[i-1], dp[0]+cost[i-2]);
                dp[0] = dp[1];
                dp[1] = dp[2];
                i++;
            }
            System.out.println("===="+dp[2]);
            return dp[2];
        }
    }

